"use strict";

const Controller = require("egg").Controller;

/**
 * @Controller 学生管理
 */
class StudentController extends Controller {
    /**
     * @jwt
     * @summary 学生列表
     * @description 获取学生列表
     * @router get /students
     * @response 200 BaseResponse 请求成功
     */
    async index() {
        // 读取数据
        const res = await this.service.student.readList();
        // 返回响应
        this.ctx.helper.send(200, res);
    }

    /**
     * @jwt
     * @summary 创建学生
     * @description 创建一个学生
     * @router post /students
     * @request body CreateStudentRequest 包含学生信息的请求体对象
     * @response 200 BaseResponse 请求成功
     */
    async create() {
        // 接收并校验参数
        this.ctx.validate(this.ctx.rule.CreateStudentRequest);
        // 保存数据库
        await this.service.student.add(this.ctx.request.body);
        // 响应成功
        this.ctx.helper.send(201);
    }

    /**
     * @jwt
     * @summary 删除学生
     * @description 删除一个学生
     * @router delete /students/:id
     * @request path string id 学生 id
     * @response 200 BaseResponse 请求成功
     */
    async destroy() {
        // 删除
        await this.service.student.remove(this.ctx.params.id);
        // 不出错，删除成功
        this.ctx.helper.send(204);
    }
}

module.exports = StudentController;
